iT邦幫忙

2024 iThome 鐵人賽

DAY 1
1
Python

Python 錦囊密技系列 第 1

【Python錦囊㊙️技1】開發中大型應用系統的必備技能

  • 分享至 

  • xImage
  •  

前言

如果把學習Python當作一趟旅行,希望能為這趟旅遊留下美好的印記,將Python各式有趣的應用記錄下來,與讀者共同體驗Python之美。系列文章會介紹一些設計理念(Design principles)、Python實作優勢及應用,並善用套件,以簡約的程式碼輔助概念說明,希望讀者能輕鬆掌握核心觀念。

內容如下:

  1. 設計典範(Design paradigms):函數式程式設計(Functional programming)、匿名函數(Lambda function)、物件導向程式設計(Object-oriented programming, OOP)、特性導向程式設計(Aspect-Oriented Programming, AOP)。
  2. Python支援的特殊函數、機制及資料結構,如Decorator、Iterator、Generator、Log、Try/Except、Testing、Cache、DataClass...等。
  3. 應用:資料分析、影像處理、自然語言處理、機器學習、語音辨識/生成、網頁/桌面程式開發、儀表板、工具開發、Office Automation…。

系列文章不會介紹Python基本語法,適合對Python有些微基礎的讀者觀看,本系列文章不是展示各項應用功能,而是衷心希望讀者能跟作者一起動手實作,透過最少的程式碼完成各式各樣的應用。

研究目的

主要是希望能研究中大型應用系統開發必備的技能,利用上述課題建構高品質、高效能、高可靠度的軟體,依照【Software Requirement Specification (SRS) Document Checklist】一文所述,建構高品質的軟體檢查清單如下圖:
https://ithelp.ithome.com.tw/upload/images/20240915/20001976Euzc1XgM4k.png
除了應用系統的功能性需求(Functional Requirements)外,還須具備非功能性需求(Non-Functional Requirements),即軟體的品質,包括:

  1. 正確性(Correctness):功能/計算不正確,其他方面就不用談了,但如何保證程式碼的每一條路徑是正確無誤的,其實是非常困難的,必須仰賴測試(Testing)、除錯(Debug)、例外處理(Try/Catch)...等機制,提升正確性。
  2. 可靠度(Reliability):系統必須穩定、可靠,每天24小時都要維持運作,不能當掉,例如最近的社群軟體及微軟作業系統當機,造成全球的影響不容小覷,要維持高可靠度,需要軟硬體的配合,軟體方面要有彈性、周延的系統架構。
  3. 效能(Efficiency):系統要具備高效能,除了核心的程式碼要具備效能外,也要藉助一些機制,例如快取(Cache)、並行處理(Concurrency)、分散式架構、負載平衡(Load Balancing)...等。
  4. 可維護性(Maintainability):軟體維護是一個永續的工作,只要系統繼續維運,就必須進行維護,包括需求變更引發的程式修改,維護常會因程式設計師的更迭造成困難度提高,因此,如何使程式設計模組化、有清楚的文件說明、程式撰寫標準(Coding guide)都是關鍵。
  5. 可用性(Usability):通常是指使用者介面/體驗(UI/UX)的易用性、親和度及美觀...等。
  6. 重複使用性(Reusability):程式模組化,可重複使用在其他專案或產品開發,減少開發成本、提升可靠度並降低開發時程。
  7. 可移植性(Portability):譬如資料庫要從MySQL移植到MS SQL Server、Oracle Database,產品之間的SQL、Stored procedure不相容要如何克服,甚至原來是桌面程式,如何移植到網頁或手機App,都是常見的問題。

因此,系列文章會針對應用系統的各項開發課題進行討論,並進行相關的Python實作。
https://ithelp.ithome.com.tw/upload/images/20240915/200019760k02jpsEir.png

結語

本系列文章的程式碼會統一放在GitHub,歡迎讀者下載測試,如有錯誤或疏漏,請不吝指正。


下一篇
【Python錦囊㊙️技2】Python 很簡單,但要寫的好很不簡單
系列文
Python 錦囊密技4
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言